// manages bitmap tiles with semantice meaning in the game

#pragma once

#include <assert.h>

#include "BitMap/Bitmap.h"
#include "pngLoader.h"

enum TILE_TYPE {
	// level tiles
	FLOOR,		// ID 0, should always be the first floor tile
	WATER,		// ID 1
	IN_FLOOR,	// ID 2
	WALL,		// ID 3
	EXIT,		// ID 4, should always be last floor tile

	// ^
	// |
	// |
	// space reserved for up to 10 types of level tiles
	// |
	// |
	// v

	// illusionist
	ILL_N = 10,
	ILL_S,
	ILL_E,
	ILL_W,

	// dog
	DOG_N,
	DOG_S,
	DOG_E,
	DOG_W,

	// guard
	GUARD_N,
	GUARD_S,
	GUARD_E,
	GUARD_W,

	// super guard
	SG_N,
	SG_S,
	SG_E,
	SG_W,

	// fake illusionist dog
	FAKE_DOG_N,
	FAKE_DOG_S,
	FAKE_DOG_E,
	FAKE_DOG_W,

	// fake illusionist guard
	FAKE_GUARD_N,
	FAKE_GUARD_S,
	FAKE_GUARD_E,
	FAKE_GUARD_W,

	// fake illusionist super guard
	FAKE_SG_N,
	FAKE_SG_S,
	FAKE_SG_E,
	FAKE_SG_W,

	// powers
	FOOD = 200,
	DEAD_BODY,
	CLOAK_N,
	CLOAK_S,
	CLOAK_E,
	CLOAK_W,

	NUM_TILE_TYPES		// should always be last item in enum
};


void initTiles();

// returns the given tile
Bitmap *getTileBmp(TILE_TYPE tile);

Png *getTilePng(TILE_TYPE tile);

Bitmap *getTitleScreen();

const char *getCutSceneRoot();

Bitmap *createCutScene(string levelFileType);

void clearCutScenes();

Png *getPauseScreen();

Bitmap *getGameOverScreen();

Bitmap *getEndingScreen();

// end of tileManager.h
